home *** CD-ROM | disk | FTP | other *** search
/ Deutsche Edition 1 / Deutsche Edition 1.iso / amok / amok_lha / amok59.lha / AmokEd_V1.02b / txt / EdAssemSup.asm < prev    next >
Assembly Source File  |  1993-08-15  |  3KB  |  124 lines

  1. ;*************************************************************************
  2. ;
  3. ;:Program.       EdAssemSup.asm
  4. ;:Contents.      Assembler-Routines for AmokEd
  5. ;:Author.        Tobias Ruland, Hartmut Goebel
  6. ;:Language.      MC68000-Assembler
  7. ;:History.       V1.0,  3/90, Tobias Ruland, Hartmut Goebel
  8. ;:History.       V1.0c, 04 Aug 1991 [hG]: Angepasst: lst.Node ist STRUCT
  9. ;
  10. ;*************************************************************************
  11.  
  12.         XDEF FindNext
  13.         XDEF FindPrev
  14.  
  15. l.next     = 0
  16. l.prev     = 4
  17. l.string   = 8   ; ab hier + 4, wenn RECORD!! (wg. Typeguard)
  18. l.len      = 12
  19.  
  20. fs.find    = 0
  21. fs.line    = 4
  22. fs.flen    = 8
  23. fs.pos     = 10
  24.  
  25.  
  26.         SECTION FindNext
  27.  
  28. FindNext:
  29.         move.l  fs.find(a0),a1        ; Find-String-Pointer
  30.         move.l  fs.line(a0),a4        ; Startline-Struktur --> a4
  31.         move.l  l.string(a4),a2       ; Pointer auf LineBuffer --> a2
  32.         move    fs.pos(a0),d6
  33.         move    d6,d5                 ; Sicherheitskopie pos --> d5
  34.         move.l  a1,a3                 ; Sicherheitskopie FindStr --> a1
  35.         move.l  #0,d7                 ; anzahl zeilenwechsel
  36. CompIt:
  37.         tst.b   (a3)
  38.         beq     foundIt
  39.         tst.b   0(a2,d6)
  40.         beq     getNextLine
  41.         move.b  0(a2,d6),d4
  42.         cmp.b   (a3)+,d4
  43.         beq     nochGleich
  44.         move.l  a1,a3                 ; von vorne
  45.         addq    #1,d5
  46.         move    d5,d6
  47.         bra     CompIt
  48. nochGleich:
  49.         addq    #1,d6
  50.         bra     CompIt
  51. getNextLine:
  52.         move.l  l.next(a4),a4
  53.         cmpa.l  #0,a4
  54.         beq     notFound
  55.         move.l  l.string(a4),a2
  56.         moveq   #0,d6
  57.         moveq   #0,d5
  58.         move.l  a1,a3
  59.         add.l   #1,d7
  60.         bra     CompIt
  61. foundIt:
  62.         sub     fs.flen(a0),d6       ; an Wortanfang
  63.         move    d6,fs.pos(a0)
  64.         move.l  a4,fs.line(a0)
  65.         move.l  d7,d0
  66.         rts
  67. notFound:
  68.         move.l  d7,d1
  69.         move.l  #-1,d0
  70.         rts
  71.  
  72. ;-------------------------------------------------------------------------
  73.  
  74.         SECTION FindPrev
  75.  
  76. FindPrev:
  77.         move.l  fs.find(a0),a1        ; Find-String-Pointer
  78.         move.l  fs.line(a0),a4        ; Startline-Struktur --> a4
  79.         move.l  l.string(a4),a2       ; Pointer auf LineBuffer --> a2
  80.         move    fs.pos(a0),d6         ; Cursorposition
  81.         move    fs.flen(a0),d3        ; Länge des FindStrings
  82.         move.l  a1,a3                 ; Sicherheitskopie FindStr --> a1
  83.         move.l  #0,d7                 ; anzahl zeilenwechsel
  84.         subq    #2,d6
  85.         move    d6,d5
  86.         tst     d6
  87.         bmi     getPrevLine
  88. P.CompIt:
  89.         tst.b   (a3)
  90.         beq     foundIt
  91.         move.b  0(a2,d6),d4
  92.         cmp.b   (a3)+,d4
  93.         beq     p.nochGleich
  94.         move.l  a1,a3                 ; von vorne
  95.         subq    #1,d5
  96.         bmi     getPrevLine
  97.         move    d5,d6
  98.         bra     P.CompIt
  99. p.nochGleich:
  100.         addq    #1,d6
  101.         bra     P.CompIt
  102. getPrevLine:
  103.         move.l  l.prev(a4),a4
  104.         cmpa.l  #0,a4
  105.         beq     notFound
  106.         add.l   #1,d7
  107.         move.l  l.string(a4),a2
  108.         move    l.len(a4),d6
  109.         subq    #8,d6
  110. eol.search:
  111.         tst.b   0(a2,d6)
  112.         beq     eol.found
  113.         addq    #1,d6
  114.         bra     eol.search
  115. eol.found:
  116.         sub     d3,d6
  117.         bmi     getPrevLine
  118.         move    d6,d5
  119.         move.l  a1,a3
  120.         bra     P.CompIt
  121. ;
  122.         END
  123.  
  124.